---
title: Generate reports and PDF previews
summary: Assemble screen data sets and render xPression/SSRS output or CSV exports.
status: draft
owner: <owner>
last_reviewed: 2026-08-21
operation_id: OP-APP-008
trigger: User requests a print/preview action or CSV export from a screen manager
---

# Generate reports and PDF previews

This workflow assembles data sets from case-search, assignment, board-log, and attorney-message screens and renders xPression or SSRS output, imaging payloads, or CSV exports.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-APP-008 |
| **Trigger** | User requests a print/preview action or CSV export from a screen manager |
| **Libraries involved** | [SAIF.Application.Claim.Legal](../../libraries/saif-application-claim-legal/overview.md), [SAIF.Services.Printing](../../libraries/saif-services-printing/overview.md), [SAIF.Services.Imaging.Import](../../libraries/saif-services-imaging-import/overview.md), [SAIF.Services.Export](../../libraries/saif-services-export/overview.md) |
| **Screens** | frmPrintPreview (utility page, no screen doc) |
| **Inputs** | Screen-assembled data set to print, preview, or export |
| **Outputs** | Rendered PDF/report output, imaging distribution payload, or CSV file |

## Steps

1. `SAIF.Application.Claim.Legal` screen managers assemble the data sets used by case-search, assignment, board-log, and attorney-message print actions.
2. [SAIF.Services.Printing](../../libraries/saif-services-printing/overview.md) renders xPression or SSRS output through `clsPrint`, `clsRSPrint`, and frmPrintPreview (utility page, no screen doc).
3. [SAIF.Services.Imaging.Import](../../libraries/saif-services-imaging-import/overview.md) supplies the imaging payload structure used by printing and distribution workflows.
4. [SAIF.Services.Export](../../libraries/saif-services-export/overview.md) supports CSV output where the workflow requires a downloadable tabular export.
   - Note: `ExportServices.GetCSV` skips null fields instead of emitting empty columns, which can create column-misaligned CSV output (see [Tech debt](../tech-debt.md)).

## Process flow

The following diagram visualizes this workflow across components.

```mermaid
flowchart TD
	Start([User requests print, preview, or export]) --> S1[Screen manager assembles data set]
	S1 --> D{Export type?}
	D -->|PDF/report| S2[SAIF.Services.Printing renders xPression or SSRS output]
	D -->|CSV| S3[SAIF.Services.Export produces CSV file]
	S2 --> S4[SAIF.Services.Imaging.Import supplies distribution payload]
	S4 --> EndOk([Output delivered to user])
	S3 --> EndOk
```

## Failure and edge-case behavior

- CSV column misalignment: null field values are skipped rather than emitted as empty columns, which can shift column alignment in the exported file (see [Tech debt](../tech-debt.md)).

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [Data model](../data-model.md)

## Sources
- `SAIF.Services.Printing/clsPrint.vb`
- `SAIF.Services.Printing/clsRSPrint.vb`
- `SAIF.Services.Export/ExportServices.vb`
- `SAIF.Services.Imaging.Import/SAIF.Services.Imaging.Import.vbproj`
